/*
	Module USART en software
	Edgar Brakarz Lubicz
*/

#include "USART.h"
#include "timer7.h"
#include <reg167.h>

void InitUsart(void) // Configuration du Module USART
{
	InitTimer7(0,0,0);
	DP2 |= (1<<11); // config bit sens (P2.11) sortie
	P2 |=  (1<<11); // idle state de la sortie USART: '1'
}

void StartBit(void)
{
	P2 &= 0xF7FF; // P2.11 = 0;
	Delay1Bit9600(); // Delay d'un bit
}

void StopBit(void)
{
	P2 |= 0x800; // P2.11 = 1;
	Delay1Bit9600();
	Delay1Bit9600(); // Delay de 2 bits pour le stop bit
}

void EnvoiCharUsart(char c) // Envoit un character sur USART
{
	int i;
	
	IEN = 0; // desactive interruptions
	
	StartBit();
	for(i=0;i<8;i++)
	{	
		P2 = (P2 & 0xF7FF) | ((c & 1) << 11);
		Delay1Bit9600(); 
		c >>=1;
	}
	StopBit();
	
	IEN = 1; // active interruptions
}

